home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
BBS-Archive
/
Dev
/
GNU-SMALLTALK.lha
/
mstbyte.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-02-15
|
4KB
|
134 lines
/***********************************************************************
*
* Byte Code definitions.
*
***********************************************************************/
/***********************************************************************
*
* Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
* Written by Steve Byrne.
*
* This file is part of GNU Smalltalk.
*
* GNU Smalltalk is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 1, or (at your option) any later
* version.
*
* GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* GNU Smalltalk; see the file COPYING. If not, write to the Free Software
* Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
***********************************************************************/
/*
* Change Log
* ============================================================================
* Author Date Change
* sbyrne 2 Jan 89 Created.
*
*/
#ifndef __MSTBYTE__
#define __MSTBYTE__
/* ??? I don't like these being defines, but you can't do math on enums, and
* you can't switch on variables. I like the looks of these (lexically
* speaking) but it does violate the guidelines about when to use defines.
*/
#define pushReceiverVariable 0
#define pushTemporaryVariable 16
#define pushLitConstant 32
#define pushLitVariable 64
#define popReceiverVariable 96
#define popTemporaryVariable 104
#define pushSpecial 112
#define returnIndexed 120
#define returnMethodStackTop 124
#define returnBlockStackTop 125
#define pushIndexed 128
#define storeIndexed 129
#define popStoreIndexed 130
#define sendSelector1ExtByte 131
#define sendSelector2ExtByte 132
#define sendSuper1ExtByte 133
#define sendSuper2ExtByte 134
#define popStackTop 135
#define dupStackTop 136
#define pushActiveContext 137
#define jumpShort 144
#define popJumpFalseShort 152
#define jumpLong 160
#define popJumpTrue 168
#define popJumpFalse 172
#define plusSpecial 176
#define minusSpecial 177
#define lessThanSpecial 178
#define greaterThanSpecial 179
#define lessEqualSpecial 180
#define greaterEqualSpecial 181
#define equalSpecial 182
#define notEqualSpecial 183
#define timesSpecial 184
#define divideSpecial 185
#define remainderSpecial 186
#define bitShiftColonSpecial 188
#define integerDivideSpecial 189
#define bitAndColonSpecial 190
#define bitOrColonSpecial 191
#define atColonSpecial 192
#define atColonPutColonSpecial 193
#define sizeSpecial 194
#define nextSpecial 195
#define nextPutColonSpecial 196
#define atEndSpecial 197
#define sameObjectSpecial 198
#define classSpecial 199
#define blockCopyColonSpecial 200
#define valueSpecial 201
#define valueColonSpecial 202
#define doColonSpecial 203
#define newSpecial 204
#define newColonSpecial 205
#define sendSelectorNoArg 208
#define sendSelector1Arg 224
#define sendSelector2Arg 240
#define receiverIndex 0
#define trueIndex 1
#define falseIndex 2
#define nilIndex 3
#define litMinusOneIndex 4
#define litZeroIndex 5
#define litOneIndex 6
#define litTwoIndex 7
#define receiverLocation (0 << 6)
#define temporaryLocation (1 << 6)
#define litConstLocation (2 << 6)
#define litVarLocation (3 << 6)
#define locationMask (3 << 6)
typedef struct ByteCodeArray *ByteCodes;
extern ByteCodes getByteCodes(), saveByteCodeArray();
extern void initByteCodes(),
compileByte(), compileAndFreeByteCodes(),
restoreByteCodeArray(), freeByteCodes(),
copyByteCodes(), printByteCodeName();
extern int currentByteCodeLength(), isSimpleReturn();
#endif /* __MSTBYTE__ */